# 从 flask 模块导入 request 对象，用于获取 HTTP 请求的相关信息
from flask import request
# 从 loguru 模块导入 logger 对象，用于进行日志记录
from loguru import logger

class LogService:
    """
    LogService 类用于配置日志记录和记录请求信息。
    """

    @staticmethod
    def configure_logging():
        """
        配置日志记录的方式。
        移除默认的日志配置，并添加自定义的日志配置，
        包括日志文件的名称、轮换规则、保留时间、日志级别、日志格式等。
        """
        # 移除默认的日志配置
        logger.remove()
        # 添加自定义的日志配置
        logger.add(
            # 日志文件名，日志将被记录到 logs/app.log 文件中
            "logs/app.log",
            # 日志文件的轮换规则，每周轮换一次
            rotation="1 week",
            # 日志文件的保留时间，保留一个月的日志
            retention="1 month",
            # 记录 INFO 及以上级别的日志
            level="INFO",
            # 日志的格式，包含时间、日志级别和日志消息
            format="{time} - {level} - {message}",
            # 打印完整的异常堆栈
            backtrace=True,
            # 打印详细的异常信息
            diagnose=True
        )

    @staticmethod
    def log():
        """
        记录当前请求的相关信息。
        包括请求的路径、请求方法、请求头、请求参数和请求体。
        """
        # 记录请求的路径
        logger.info(f"Request Path: {request.path}")
        # 记录请求的方法
        logger.info(f"Request Method: {request.method}")
        # 记录请求的头信息
        logger.info(f"Request Headers: {request.headers}")
        # 记录请求的参数
        logger.info(f"Request args: {request.args}")
        # 记录请求的体信息，将其以文本形式获取
        logger.info(f"Request Body: {request.get_data(as_text=True)}")
